package com.dxg.msns.user.service;

import com.dxg.msns.common.pojo.PageResult;
import com.dxg.msns.user.pojo.User;
import org.springframework.data.annotation.Transient;

import java.util.List;
import java.util.Map;

public interface UserService {
    /**
     * 分页查询用户
     * 
     * @param key
     * @param page
     * @param rows
     * @param sortBy
     * @param desc
     * @return
     */
    PageResult<User> queryUsersByPage(String key, Integer page, Integer rows, String[] sortBy, Boolean[] desc,
            String[] uids);

    /**
     * 根据用户名查询用户
     * 
     * @param user
     * @return
     */
    boolean findUserByName(User user);

    /**
     * 新增用户
     * 
     * @param user
     */
    void saveUser(User user);

    /**
     * 修改用户
     * 
     * @param user
     */
    void updateUser(User user);

    /**
     * 删除用户
     * 
     * @param id
     */
    void deleteUser(Integer id);

    /**
     * 查询用户数据是否可用
     * 
     * @param data
     * @param type
     * @return
     */
    Boolean checkUserData(String data, Integer type);

    /**
     * 根据id查找用户
     * 
     * @param uid
     * @return
     */
    User queryNameAvatarById(String uid);

    /**
     * 发送验证码
     * 
     * @param email
     * @return
     */
    Boolean sendVerifyCode(String email);

    /**
     * 注册
     * 
     * @param user
     * @param code
     * @return
     */
    Map<String, Object> register(User user, String code);

    /**
     * 根据用户名和密码查询用户
     * 
     * @param uname
     * @param upassword
     * @return
     */
    User queryUser(String uname, String upassword);

    /**
     * 根据id查找用户
     * 
     * @param id
     * @return
     */
    User queryById(Integer id);

    /**
     * 修改密码
     * 
     * @param id
     * @param newPwd
     */
    void changePwdById(Integer id, String newPwd);

    /**
     * 修改头像
     * 
     * @param uid
     * @param avatarUrl
     */
    void changeAvatar(Integer uid, String avatarUrl);

    /**
     * 根据uid查找用户
     * 
     * @param uid
     * @return
     */
    User queryByUid(String uid);

    /**
     * 根据uid修改密码
     * 
     * @param uid
     * @param newPassword
     */
    void changePwdByUid(String uid, String newPassword);

    /**
     * 根据uid修改头像
     * 
     * @param uid
     * @param avatarUrl
     */
    void changeAvatarByUid(String uid, String avatarUrl);

    /**
     * 根据uid修改昵称
     * 
     * @param uid
     * @param uname
     */
    void changeNicknameByUid(String uid, String uname);

    /**
     * 根据uid修改用户角色
     * 
     * @param uid
     * @param roleCode
     */
    void changeRoleByUid(String uid, Integer roleCode);

    List<User> queryUsersByName(String key);

    void updateUserInfo(User user);
}
